/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package jxta;

import java.io.IOException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.jxta.endpoint.Message;
import net.jxta.endpoint.StringMessageElement;
import net.jxta.pipe.OutputPipe;
import net.jxta.pipe.OutputPipeEvent;
import net.jxta.pipe.OutputPipeListener;
import net.jxta.pipe.PipeService;
import net.jxta.protocol.PipeAdvertisement;

/**
 *
 * @author kastillo
 */
public class CrearOutputPipe implements OutputPipeListener,Runnable {
    private PipeService pipeService;
    private PipeAdvertisement pipeAdv;
    private OutputPipe outputPipe;
    private Message mensajeRta;
    private String destino;
    private  int secuencia;

    public CrearOutputPipe(PipeService pipeService, PipeAdvertisement pipeAdv, Message mensaje,String destino,int secuencia) {
       this.pipeService=pipeService;
       this.pipeAdv=pipeAdv;
       this.mensajeRta = mensaje;
       this.destino = destino;
       this.secuencia = secuencia;
    }
    public void run() {
       start();
    }
  public synchronized void start() {

            try {
                System.out.println("creando OutPutPipe");
               pipeService.createOutputPipe(pipeAdv, this);
            } catch (IOException ex) {
                Logger.getLogger(CrearOutputPipe.class.getName()).log(Level.SEVERE, null, ex);
            }

    }
 public void outputPipeEvent(OutputPipeEvent event) {
       
        // get the output pipe object
        System.out.println("llego al evento para responder");
        outputPipe = event.getOutputPipe();

        Message msg;

        try {
            System.out.println("Enviando Mensaje");
            // create the message
            msg = new Message();
            Date date = new Date(System.currentTimeMillis());
            // add a string message element with the current date
            StringMessageElement sme = new StringMessageElement("MESSAGE_NAME_SPACE JI JI JI", date.toString(), null);

            msg.addMessageElement(null, sme);
            // send the message

            
//            // para guardar el envío
//            String destino = this.destino;
//            ManagerJXTA.historiaMensajes.actualizarSecuenciaNodo(destino);
//            int sec= ManagerJXTA.historiaMensajes.traerSecuenciaNodo(destino);
//            String consulta ="Enviando Token";
//            String color = ManagerJXTA.estadoGlobal.getColor();
//
//           if(sec!=0)
//            ManagerJXTA.historiaMensajes.guardarMensajeEnviado(sec, destino, consulta, color);



                

            outputPipe.send(mensajeRta);
            System.out.println("message sent");
        } catch (IOException e) {
            System.out.println("failed to send message");
            e.printStackTrace();
            System.exit(-1);
        }
        stop();
    }

     /**
     * Closes the output pipe and stops the platform
     */
    public void stop() {
        // Close the output pipe
        outputPipe.close();
        // Stop JXTA
//
//        synchronized (lock) {
//            // done.
//            lock.notify();
//        }
    }

}
